﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<assert.h>
#include<ctype.h>


//char* my_strcpy(char* dest, const char* src)
//{
//	char* ret = dest;
//	assert(dest != NULL);
//	assert(src != NULL);
//
//	while ((*dest++ = *src++))
//	{
//		;
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[20] = { 0 };
//	char ret = my_strcpy(arr2, arr1);
//	printf("%s\n", ret);
//	return 0;
//}

//strcat 的使⽤和模拟实现
// • 源字符串必须以 '\0' 结束。
//• ⽬标字符串中也得有 \0 ，否则没办法知道追加从哪⾥开始。
//• ⽬标空间必须有⾜够的⼤，能容纳下源字符串的内容。
//• ⽬标空间必须可修改。
// 
//char* my_strcat(char* dest, const char* str)
//{
//	char* ret = dest;
//	assert(dest && str);
//	while (dest != '\0');
//	{
//		dest++;
//	}
//	while (*dest++ = *str++)
//	{
//		;
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[20] = "ghi";
//
//	my_strcat(arr1, arr2);
//	printf("%s\n", arr1);
//	return 0;
//}


//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[20] = "ghi";
//
//	strcat(arr1, arr1);
//	printf("%s\n", arr1);
//	return 0;
//}


//strcmp 的使⽤和模拟实现
//标准规定：
//◦ 第⼀个字符串⼤于第⼆个字符串，则返回⼤于0的数字
//◦ 第⼀个字符串等于第⼆个字符串，则返回0
//◦ 第⼀个字符串⼩于第⼆个字符串，则返回⼩于0的数字
//◦ 那么如何判断两个字符串？ ⽐较两个字符串中对应位置上字符ASCII码值的⼤⼩。

//int my_strcmp(const char* str1, const char* str2)
//{
//	int ret = 0;
//	assert(str1 && str2);
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//			return 0;
//		str1++;
//		str2++;
//	}
//	return *str1 - *str2;
//}
//
//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abbdef";
//	int ret = my_strcmp(arr1, arr2);
//	printf("%d\n", ret);
//	return 0;
//}
//strcpy strcat strcmp 长度不受限制的字符串函数


//strncpy strncat strncmp 长度受限制的字符串函数












































